#include <stdio.h>

#define STDIN
//#define DEBUG

typedef  int bool;
#define true    1
#define false   0

int N;
int array[700][2];

/*三点共线使用向量叉乘*/
/*
 * 二维向量(a1, b1) × (a2, b2)
 * a1*b2-a2*b1 == 0时,三点共线
 * 可以判断斜率不存在的情况
 *
 */

bool OnOneLine(int i1, int i2, int i3)
{
    int a1 = array[i1][0] - array[i2][0];
    int b1 = array[i1][1] - array[i2][1];
    int a2 = array[i1][0] - array[i3][0];
    int b2 = array[i1][1] - array[i3][1];

#ifdef DEBUG
    printf("a1: %d b1: %d a2: %d b2: %d\n", a1, b1, a2, b2);
#endif

    return (a1*b2 - a2*b1) == 0;
}

void process()
{
    int i, j, k;
#ifdef DEBUG
    for (i = 0; i < N; ++i)
    {
        printf("(%d %d)\n", array[i][0], array[i][1]);
    }
#endif

    int max = 0;
    int tmp;
    for (i = 0; i < N; ++i)
    {
        for (j = i+1; j < N; ++j)
        {
            tmp = 2;
            for (k = j+1; k < N; ++k)
            {
                if (OnOneLine(i, j, k))
                {
#ifdef DEBUG
                    printf("%d %d %d三点共线\n", i, j, k);
#endif
                    tmp++;
                }
            }
            if (tmp > max)
                max = tmp;

        }
    }
    printf("%d\n", max);
}

int main()
{
#ifdef STDIN
    freopen("bin/1118.in", "r", stdin);
#endif

    while(1)
    {
        scanf("%d", &N);
        if (N == 0)
            break;
        int i;
        for (i = 0; i < N; i++)
        {
            scanf("%d %d", &array[i][0], &array[i][1]);
            array[i][2] = 0;
        }
        process();
    }

    return 0;
}
